package com.qys.livesMall.security.interceptor.config;

import jakarta.annotation.PostConstruct;
import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

@Component
@Slf4j
public class ExcludePathConfig {

    @Getter
    @Setter
    @Value("${spring.profiles.active}")
    private String active;


    @PostConstruct
    public void init() {
        allEx = new ArrayList<>();
        allEx.add("/test");
        allEx.add("/user/register");
        allEx.add("/web/auth/login");
        allEx.add("/app/auth/login");
        allEx.add("/app/register");
        allEx.add("/app/userInfo/rePassword");
        allEx.add("/app/user/rePassword");
        allEx.add("/app/version/getNewApp");
        allEx.add("/api/app/common/file");
        allEx.add("/api/app/common/environment");
        allEx.add("/web/auth/createUser");
        allEx.add("/app/login");
        allEx.add("/app/googleLogin");
        allEx.add("/app/user/register");
        allEx.add("/app/user/userBindingPhone");
        allEx.add("/app/user/userBindingMail");
        allEx.add("/app/user/sendMail/*");
        allEx.add("/app/express/expressTrack");
        allEx.add("/login/google");
        allEx.add("/login/google/callback/**");
        allEx.add("/api/app/common/**");
        allEx.add("/app/anchor/lives/autoCloseLive");
        allEx.add("/app/user/sendMessage/**");
        allEx.add("/app/user/change/password");
        allEx.add("/app/user/getInternationalTelephoneAreaCode");
        allEx.add("/system/dict/data/type/**");
        allEx.add("/app/user/check/username/*");
        allEx.add("/app/user/getUser/phone/*");
        allEx.add("/app/language/text/info/*");
        allEx.add("/app/facebookLogin");
        /**
         * 首页
         */
        allEx.add("/app/seckillActivity/goodList");
        allEx.add("/app/shopGoodsInfo/useraLLpage");
        allEx.add("/app/openSysMessage/getUnreadNum");
        allEx.add("/app/shopGoodsInfo/category/**");
        allEx.add("/app/shopGoodsInfo/categoryAll");
        allEx.add("/app/seckillActivity/oneActivity");
        allEx.add("/app/home/banner/list");
        allEx.add("/app/openSysMessage/pageByApp");
        allEx.add("/app/shop/list");
        allEx.add("/app/anchor/anchorList");
        allEx.add("/app/short/video/recommendedList");
        allEx.add("/app/user/info");
        allEx.add("/app/h2-sys-config/getConfigKey/userDefaultTopImg");
        allEx.add("/app/openSysMessage/messageBySys");
        allEx.add("/app/platformAdvertisement/queryHomeInfo");
        /**
         * 商品
         */
        allEx.add("/app/shopOrderComment/page");
        allEx.add("/app/shopGoodsInfo/product/*");
        allEx.add("/app/shopGoodsInfo/productRecommended");
        allEx.add("/app/shopGoodsInfo/queryProductsBasedOnUserPreferences");
        allEx.add("/app/shop/*");
        allEx.add("/app/anchor/sell/task/all");
        allEx.add("/app/h2-sys-config/**");
        allEx.add("/app/shop-level/*");

        /**
         * 点击店铺进入主页
         */
        allEx.add("/app/shopAdvertInfo/*");
        allEx.add("/app/seckillActivity/query");
        allEx.add("/app/seckillActivity/goodList");
        allEx.add("/app/shopGoodsInfo/cateTwo/**");
        allEx.add("/app/shop/browseShop/**");
        /**
         * 店铺秒杀商品
         */
        allEx.add("/app/seckillActivity/info");
        /**
         * 店铺商品页
         */
        allEx.add("/app/shop/get/*");
        /**
         * 短视频
         */
        allEx.add("/app/short/video");
        allEx.add("/app/country/list");

        if (!active.equals("prod")) {
            allEx.add("/doc.html");
            allEx.add("/v3/api-docs/**");
            allEx.add("/swagger-ui.html");
            allEx.add("/webjars/**");
        }
        log.info("初始化拦截过滤url完成:{}", allEx);
    }

    public static List<String> allEx = null;

    public static List<String> appEx = null;

    public static List<String> webEx = null;

    public static List<String> getExApp() {
        if (appEx != null) {
            return appEx;
        }
        appEx = new ArrayList<>();
        appEx.add("/app/**");
        return appEx;
    }

    public static List<String> getExWeb() {
        if (webEx != null) {
            return webEx;
        }
        webEx = new ArrayList<>();
        webEx.add("/web/**");
        return webEx;
    }

}
